package main

import "fmt"

// defer

func calc(index string, a, b int) int {
	ret := a + b
	fmt.Println(index, a, b, ret)
	return ret
}

func main() {
	a := 1
	b := 2
	// calc(第四执行 calc(第一执行))
	defer calc("1", a, calc("10", a, b))
	a = 0
	// calc(第三执行 calc(第二执行))
	defer calc("2", a, calc("20", a, b))
	b = 1
}

// a = 1 b = 2
// 1. calc("1", a, calc("10", a, b))
// 1. calc("1", 1, 3) // 10, 1, 2, 3
// 1. 				  //1, 1, 2, 3

// a = 0 b = 2
// 2. calc("2", 0, calc("20", 0, 2)) // 20, 0, 2, 2
// 2. calc("2", 0, 2)
// 2.								// 2, 0, 2, 2
// 10 1 2 3
// 20 0 2 2
// 2 0 2 2
// 1 1 2 3
